反射的三种方式及利用反射创建对象

传统方式

普通方法也就是最常见的创建对象的方法
前提条件:知道存在这个类,且这个类叫Object
例:

Object obj=new Object();

利用反射创建对象

方式一:通过类名.class方式
前提条件:需要在编译时就知道存在Object类
例:

Class<?> obj1 = Object.class;

方式二:通过已知对象实例.getClass方式
前提条件:存在该类创建的已知对象,且需要在编译时就知道存在Object类
例:此处已通过普通(传统)方式创建了对象obj

Class<?> obj2 = obj.getClass();

方式三:通过Class.forName的方式
该方法特点:编译时可能不知道存在Object类,但仍然可以创建对象,即不是通过类名来创建对象,而是通过类存在位置的相对路径来创建对象
例:

Class<?> obj3 = Class.forName("java.lang.Object");

小结:上述三种创建得到的都是Class类型的对象,又称之为字节码对象

利用字节码对象来创建实例化对象

例:此处以obj3为例

  1. 利用obj3获取无参构造方法对象
Constructor<?> constructor = obj3.getConstructor();
  1. 通过构造方法来创建对象
Object o = constructor.newInstance();

小结:此时对象o就是通过发射创建的实例化对象
以上,仅供学习参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值